﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using GestorDeFlotasDesktop.AbmChofer;
using GestorDeFlotasDesktop.AbmCliente;

namespace GestorDeFlotasDesktop.RegistrarViaje
{
    public partial class RegistrarViajes : Form
    {
        public RegistrarViajes()
        {
            InitializeComponent();
        }

        #region validarCampos

        private int validarCampoNumerico(string campo)
        {

            foreach (char letra in campo)
                if (letra < '0' || letra > '9')
                    return 0;

            return 1;
        }

        public int validarCampos()
        {
            int sinErrores = 1;
            /*************  Validar Campos Obligatorios  *********************/
            if (comboBoxTipoViaje.Text == string.Empty)
            {
                labelTipoViaje.Text = "* Campo Obligatorio";
                labelTipoViaje.ForeColor = System.Drawing.Color.Red;
                sinErrores = 0;
            };
            if (textBoxChofer.Text == string.Empty)
            {
                labelChofer.Text = "* Campo Obligatorio";
                labelChofer.ForeColor = System.Drawing.Color.Red;
                sinErrores = 0;
            };
            if (comboBoxTurno.Text == string.Empty)
            {
                labelTurno.Text = "* Campo Obligatorio";
                labelTurno.ForeColor = System.Drawing.Color.Red;
                sinErrores = 0;
            };
            if (textBoxCantidadFichas.Text == string.Empty)
            {
                labelCantidadFichas.Text = "* Campo Obligatorio";
                labelCantidadFichas.ForeColor = System.Drawing.Color.Red;
                sinErrores = 0;
            };
            if (dateTimePicker1.Text == string.Empty)
            {
                labelFechaHoraViaje.Text = "* Campo Obligatorio";
                labelFechaHoraViaje.ForeColor = System.Drawing.Color.Red;
                sinErrores = 0;
            };

            if (comboBoxTipoViaje.Text == "Cliente" && textBoxChofer.Text == string.Empty)
            {
                labelChofer.Text = "* Campo Obligatorio (Tipo de Viaje:Cliente)";
                labelChofer.ForeColor = System.Drawing.Color.Red;
                sinErrores = 0;
            };
            /*************  Validar Tipo de Datos  *********************/
            /*if (validarCampoNumerico(textBoxAnio.Text) == 0)
            {
                ErrorAnio.Visible = true;
                ErrorAnio.Text = "Campo Numerico";
                sinErrores = 0;
            }*/
            return sinErrores;
        }
        #endregion

        public int id_chofer = -1, id_cliente= -1;

        private void llenarTurnos()
        {
            sqlManager.Conectar();
            comboBoxTurno.DataSource = sqlManager.ObtenerTurnos();
            sqlManager.Desconectar();

            comboBoxTurno.ValueMember = "ID";
            comboBoxTurno.DisplayMember = "Descripcion";
            comboBoxTurno.SelectedIndex = 0;
        }

        private void RegistrarViajes_Load(object sender, EventArgs e)
        {
            llenarTurnos();
        }

        private void buttonSeleccionarChofer_Click(object sender, EventArgs e)
        {
            ListadoChofer formListadoChofer = new ListadoChofer(); //Busca Chofer
            formListadoChofer.ShowDialog(this);
            if (formListadoChofer.datoChofer.id_chofer != 0)   //No se cancelo la busqueda
            {
                textBoxChofer.Text = formListadoChofer.datoChofer.nombre;
                id_chofer = formListadoChofer.datoChofer.id_chofer;
                //Muestra el nombre pero cuando se manda a guardar se manda la id
            }
        }

        private void buttonSeleccionarCliente_Click(object sender, EventArgs e)
        {
            if (comboBoxTipoViaje.Text == "Cliente")
            {
                ListadoCliente formListadoCliente = new ListadoCliente(); //Busca Chofer
                formListadoCliente.ShowDialog(this);
                if (formListadoCliente.datoCliente.id_cliente != 0)   //No se cancelo la busqueda
                {
                    textBoxCliente.Text = formListadoCliente.datoCliente.nombre;
                    id_cliente = formListadoCliente.datoCliente.id_cliente;
                    //Muestra el nombre pero cuando se manda a guardar se manda la id
                }
            }
            else
                MessageBox.Show("Solo se puede seleccionar un cliente, cuando el tipo de viaje es Cliente", "Registrar Viaje", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }

        private void botonCancelar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void botonGuardar_Click(object sender, EventArgs e)
        {
            //Armar Fecha y Hora
            DateTime fecha_aux = new DateTime();
            fecha_aux = Convert.ToDateTime(dateTimePicker1.Text);
            string hora = numericUpDownHora.Value.ToString();
            string minutos = numericUpDownMinutos.Value.ToString();
            DateTime fecha_hora = new DateTime(fecha_aux.Year, fecha_aux.Month, fecha_aux.Day, 
                                               Convert.ToInt32(hora),
                                               Convert.ToInt32(minutos),
                                               00);
            String.Format("{0:d/M/yyyy HH:mm:ss}", fecha_hora);
            sqlManager.Conectar();
            int resultado = sqlManager.RegistrarViaje(comboBoxTipoViaje.Text,
                                                      id_chofer,
                                                      Convert.ToInt32(comboBoxTurno.SelectedValue.ToString()),
                                                      textBoxCantidadFichas.Text,
                                                      fecha_hora,
                                                      id_cliente);
            sqlManager.Desconectar();
            
            if (resultado != 1)
            {
                MessageBox.Show("No se pudo registrar", "Log", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            else
            {
                MessageBox.Show("Se registro correctamente", "Log", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        private void botonLimpiar_Click(object sender, EventArgs e)
        {
            id_chofer = -1;
            id_cliente = -1;
            comboBoxTipoViaje.SelectedIndex = 0;
            comboBoxTipoViaje.Text = string.Empty;
            comboBoxTurno.SelectedIndex = 0;
            textBoxCantidadFichas.Text = string.Empty;
        }

    }
}
